package com.nanyang.tms.api.service.saleprice;

import com.nanyang.common.core.domain.ApiResult;
import com.nanyang.common.core.page.PageBean;
import com.nanyang.tms.api.dto.request.saleprice.SaleBaseDiscountAddRequest;
import com.nanyang.tms.api.dto.request.saleprice.SaleQueryRequest;
import com.nanyang.tms.api.dto.request.saleprice.SaleUpdateStateRequest;
import com.nanyang.tms.api.dto.request.saleprice.add.SaleBaseAddRequest;
import com.nanyang.tms.api.dto.request.saleprice.update.SaleBaseUpdateRequest;
import com.nanyang.tms.api.dto.response.saleprice.SaleBaseResponse;
import com.nanyang.tms.api.dto.response.saleprice.SalePageResponse;
import com.nanyang.tms.api.dto.response.saleprice.SalePriceDiscountResponse;

import java.util.List;

public interface SalePriceRpcService {
    /**
     * 列表
     * @param param
     * @return
     */
    ApiResult<PageBean<SalePageResponse>> listSale(SaleQueryRequest param);
    /**
     *
     * <p>disableState</p>
     * <p>Description:(禁用)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> disableState(SaleUpdateStateRequest param);
    /**
     *
     * <p>enableState</p>
     * <p>Description:(启用)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> enableState(SaleUpdateStateRequest param);

    /**
     *
     * <p>saveSale</p>
     * <p>Description:(保存)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> saveSale(SaleBaseAddRequest param);

    /**
     *
     * <p>updateSale</p>
     * <p>Description:(修改)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> updateSale(SaleBaseUpdateRequest param);
    /**
     *
     * <p>getProductById</p>
     * <p>Description:(根据code获取销售详情)</p>
     *
     * @param code
     * @return
     */
    ApiResult<SaleBaseResponse> selectByCode(String code);

    /**
     *
     * <p>updateSale</p>
     * <p>Description:(设置会员价)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> setUpDiscount(SaleBaseDiscountAddRequest param);

    /**
     *
     * <p>updateSale</p>
     * <p>Description:(根据商品查询会员价格)</p>
     *
     * @param saleProductCode
     * @return
     */
    ApiResult<List<SalePriceDiscountResponse>> querySalePriceDiscount(String saleProductCode);
}
